<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="../common/favicon.ico" type="image/x-icon">
    <title>靓的仔的Java博客</title>
    <link rel="stylesheet" href="../common/css/index.css">
</head>


<body>
    <header class="header">
        <div class="photo">
            <a href="/MyBlog/index.html">
                <img src="../common/images/photo.jpg">
                <span>靓</span><span>的</span><span>仔</span>
            </a>
        </div>
        <div class="count">正在浏览Java博客</div>
    </header>
    <section class="section">
        <h1 class="urge">希望你并不是为了努力而努力</h1>
        <div class="photo_info">
            <img src="../common/images/photo.jpg">
            <p>靓的仔</p>
            <span>"我不会是<br>最勇的吧"</span>
        </div>
    </section>
    <div class="boke">
        <div class="blog">
            <h1 class="title">Java的编译过程概述</h1>
            <p>Java的编译过程对于程序开发来说，并没有多大作用，但是，在搞清楚底层原理之后，肯定可以帮助到开发。<br>
                Java代码要运行起来包括两个非常重要的阶段：
                一、编译阶段<br>
                编译阶段的主要任务是判断Java代码能不能符合Java的格式。包括以下两个个过程：
                1.敲好代码（废话）<br>
                2.使用javac.exe对程序进行编译<br>
                3.javac命令会将代码进行预处理，包括宏替换，调整格式，删除注释等等之后生成.class文件<br>
                当一段Java代码被写好之后，就要使用JDK(Java Development kit)中的javac命令来帮助生成.class文件。<br>
                javac对源代码处理之后生成.class文件，.class文件并不是纯粹的二进制代码。<br>
                二、运行阶段<br>
                运行阶段就比较复杂了。包括过程：<br>
                1.对.class文件使用java命令<br>
                2.java命令会调用JVM(Java Visual Machine)Java虚拟机<br>
                3.JVM会调用ClassLoader(类加载器)<br>
                4.ClassLoader通过classpath找到.class文件<br>
                5.ClassLoader将找到的.class文件装载到JVM<br>
                6.JVM对.class文件运行<br>
                当得到一个.class文件之后，因为这个文件通过了javac命令的编译，那么这个文件是肯定可以运行。
                这时再对.class文件使用java命令，java命令就会调用JVM，JVM又会马上调用ClassLoader，ClassLoader会去找.class文件。
                怎么找？这时就需要一个环境变量classpath，ClassLoader会从这个环境变量中去寻找.class文件，如果没有配置该环境变量，ClassLoader就会默认在当前目录下寻找.class文件。
                .class文件被找到之后，ClassLoader会马上把这个.class文件装载到JVM，JVM就会处理这个文件执行得到结果(正因为有了JVM的中间媒介作用，Java代码才有如此好的移植性)。
            </p>
            <div class="date">发布于2021年09月06日 13:44:37</div>
        </div>
    </div>
</body>

</html>